package com.chen.blue.service.business;

import com.chen.blue.domain.delete.business.CompetitionDelete;
import com.chen.blue.domain.delete.business.CompetitionItemDelete;
import com.chen.blue.domain.dto.business.CompetitionDto;
import com.chen.blue.domain.dto.business.update.CompetitionEdit;
import com.chen.blue.domain.dto.business.update.CompetitionItemEdit;
import com.chen.blue.domain.dto.excel.CompetitionExcel;
import com.chen.blue.domain.model.business.CompetitionModel;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chen.blue.domain.query.business.CompetitionQuery;
import com.chen.blue.domain.vo.business.CompetitionVo;
import com.chen.blue.exception.e.DtoNullException;
import com.chen.blue.result.DataResult;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author CLT
 * @since 2024-06-20
 */
public interface ICompetitionService extends IService<CompetitionModel> {

    /**
     * 导入赛事及其赛项
     *
     * @param excelList
     * @return
     */
    boolean addCompetition(List<CompetitionExcel> excelList) throws DtoNullException;

    /**
     * 赛事及赛项导出
     *
     * @return
     */
    List<CompetitionExcel> exportCompetition();

    /**
     * 禁用赛事
     *
     * @param edit
     * @return
     */
    boolean forbiddenCompetition(CompetitionEdit edit) throws DtoNullException;

    /**
     * 禁用赛项
     *
     * @param edit
     * @return
     */
    boolean forbiddenItem(CompetitionItemEdit edit) throws DtoNullException;

    /**
     * 赛项删除
     *
     * @param delete
     * @return
     */
    boolean deleteItem(CompetitionItemDelete delete) throws DtoNullException;

    /**
     * 赛事删除
     *
     * @param delete
     * @return
     */
    boolean deleteCompetition(CompetitionDelete delete) throws DtoNullException;

    /**
     * 多条件查询赛事及其赛项
     *
     * @param query
     * @return
     */
    DataResult<List<CompetitionVo>> competitionList(CompetitionQuery query) throws DtoNullException;

    /**
     * 赛事和赛项下拉选
     *
     * @return
     */
    DataResult<List<CompetitionVo>> competitionListSelect() throws DtoNullException;

}
